#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

int cmp_int(const void* num1, const void* num2)
{
    return *(int*)num1 - *(int*)num2;
}

int* findErrorNums(int* nums, int numsSize, int* returnSize)
{
    int* errArr = (int*)malloc(8);
    assert(errArr);
    qsort(nums, numsSize, sizeof(int), cmp_int);
    int prv = 0;
    for (int i = 0; i < numsSize; i++)
    {
        int cur = nums[i];
        if (cur == prv)
        {
            errArr[0] = prv;
        }
        else if (cur - prv > 1)
        {
            errArr[1] = prv + 1;
        }

        prv = cur;
    }

    if (nums[numsSize - 1] != numsSize)
    {
        errArr[1] = numsSize;
    }

    *returnSize = 2;
    return errArr;
}


int main()
{
    int arr[4] = { 1,2,3,3 };
    int n = 0; 
    int * ret = findErrorNums(arr, 4, &n);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", ret[i]);
    }

    free(ret);
    ret = NULL;
    return 0;
}